package com.shujia.io_.one;

import org.junit.Test;

import java.io.File;
import java.util.Date;

public class FileDemo {
    @Test
    public void test4() {

//        public boolean renameTo(File dest):把文件重命名为指定的文件路径

        File file = new File("file\\《斗罗大陆之火影卡卡西》.txt");
        File dest = new File("file\\斗罗大陆之火影卡卡西.txt");
        file.renameTo(dest);

        File dir = new File("D:\\");
        File[] files = dir.listFiles();
        for (File subFile : files) {
            System.out.println(subFile.getAbsolutePath());
            //        public boolean isDirectory()：判断是否是文件目录
            System.out.println("是否是文件夹：" + subFile.isDirectory());
//        public boolean isFile() ：判断是否是文件
            System.out.println("是否是文件:" + subFile.isFile());

//        public boolean canRead() ：判断是否可读
            System.out.println("是否可读" + subFile.canRead());

//        public boolean canWrite() ：判断是否可写
            System.out.println("是否可写" + subFile.canWrite());

//        public boolean isHidden() ：判断是否隐藏
            System.out.println("是否隐藏" + subFile.isHidden());

            System.out.println("-----------------------");
        }


    }


    @Test
    public void test3() {
        File file = new File("file\\《斗罗大陆之火影卡卡西》.txt");
//        public String getAbsolutePath()：获取绝对路径
        System.out.println(file.getAbsolutePath());

//        public String getPath() ：获取相对路径
        System.out.println(file.getPath());

//        public String getName() ：获取名称
        System.out.println(file.getName());

//        public String getParent()：获取上层文件目录路径。若无，返回null
        System.out.println(file.getParent());

//        public long length() ：获取文件长度（即：字节数）。不能获取目录的长度。
        System.out.println(file.length());

//        public long lastModified() ：获取最后一次的修改时间，毫秒值
        long time = file.lastModified();
        System.out.println(DateUtils.dateToStr(new Date(time)));


//        public String[] list() ：获取指定目录下的所有文件或者文件目录的名称数组
        File dir = new File("D:\\");
        String[] fileName = dir.list();
        for (String name : fileName) {
            System.out.println(name);
        }

        System.out.println("-------------");
//        public File[] listFiles() ：获取指定目录下的所有文件或者文件目录的File数组
        File[] files = dir.listFiles();
        for (File subFile : files) {
            System.out.println(subFile.getAbsolutePath());
        }


    }


    @Test
    public void test2() {
//        public File(String parent, String child)
//        以parent为父路径，child为子路径创建File对象。
        File file = new File("file", "note.txt");
        System.out.println(file.exists());


//public File(File parent, String child)
//        根据一个父File对象和子文件路径创建File对象
        File dir = new File("file"); // 在当前模块中查找file的目录
        File file1 = new File(dir, "note.txt");
        System.out.println(file1.exists());
    }


    @Test
    public void test1() {
        // 单元测试, 相对路径是当前模块
        File path = new File(".");
        System.out.println(path.getAbsolutePath());

        File file = new File("file\\note.txt");
        System.out.println(file.exists());
    }

    public static void main(String[] args) {
        /*
        以pathname为路径创建File对象，可以是绝对路径或者相对路径。
            绝对路径：是一个固定的路径, 从盘符开始
            相对路径：是相对于某个位置开始
         */
//        File file = new File("D:\\a.txt");
        // 绝对路径, 如果是项目里面的文件, 不同的电脑项目的存放路径可能会不同,
        // 最终在查找文件的时候, 可能会找不到文件
        // File file = new File("D:\\develop\\shujia\\java_se_20\\day19\\file\\note.txt");

        // 获取当前方法相对路径
        File path = new File(".");
        System.out.println(path.getAbsolutePath());

        File file = new File("day19\\file\\note1.txt");


        // 获取文件名称
        String name = file.getName();
        System.out.println(name);

        // public boolean exists() ：判断是否存在
        System.out.println(file.exists());

    }
}
